/*
 * Projeto Casamento
 * 
 * Versao: 0.0.1
 * Autor: Cristiano Lima
 * Data: 28/02/2013
 * 
 * Copyright (C) 2012-2013
 */
package casamento.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import casamento.Bean.TipoEstabelecimento;

public class SegmentoDAO {
	
	
	Connection connection;
	Conexao con = new Conexao();
	/**
	 * Método para inserir segmento
	 * @param estBean
	 */
	public void inserir(TipoEstabelecimento segmento) {

		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		session.saveOrUpdate(segmento);
		t.commit();

		}
	
	/**
	 * Método responsavél por alterar dados do estabelecimento.
	 * @throws ClassNotFoundException 
	 * @throws SQLException 
	 * 
	 */
	public void alterarSegmento(String campo, String valor, Integer id) throws ClassNotFoundException, SQLException{
		
		this.connection = con.getConnection();
		String sql = "UPDATE TbTipoSegmento SET " + campo + "=? WHERE id = ?" ;
		
		PreparedStatement stmt = connection.prepareStatement(sql);
		stmt.setString(1, valor);
		stmt.setInt(2, id);
		stmt.execute();
		stmt.close();
	}
	
	/**
	 * Método responsável por listar todos os segmentos.
	 */
	@SuppressWarnings("unchecked")
	public List<TipoEstabelecimento> listaTipoSegmento() {

		List<TipoEstabelecimento> listaTipoSegmento = new ArrayList<TipoEstabelecimento>();
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		listaTipoSegmento = session.createQuery("FROM TbTipoSegmento").list();
		t.commit();

		return listaTipoSegmento;

		}
	
	/**
	 * Método responsável por listar segmento por Id do estabelecimento
	 */
	public TipoEstabelecimento listarPorId(Integer id){
		
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction t = session.beginTransaction();
		TipoEstabelecimento segmento = (TipoEstabelecimento) session.get(TipoEstabelecimento.class, id);
		t.commit();
		
		return segmento;
	}
}
